home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-10 | 9.1 KB | 323 lines | [TEXT/MPS ] |
- (*
- File: SANE.mod
-
- Copyright: © 1983-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Version: Universal Interfaces 2.0a3 ETO #16, MPW prerelease. Wednesday, January 11, 1995.
-
- Bugs?: If you find a problem with this file, send the file and version
- information (from above) and the problem description to:
-
- Internet: apple.bugs.applelink.apple.com
- AppleLink: APPLE.BUGS
-
- *)
-
- (*$TAGS-*)
- (*$CALLING PASCAL*)
- MODULE SANE;
-
- IMPORT SYSTEM, Types;
-
- (* Elems881 mode set by -d Elems881=true on Pascal command line *)
-
- (*$IF UNDEFINED Elems881*)
- (*$SET Elems881 FALSE*)
- (*$END*)
-
-
- CONST
- (*$IF OPTION mc68881 *)
-
- (**======================================================================*
- * The interface specific to the MC68881 SANE library *
- *======================================================================**)
-
- Inexact* = 8;
- DivByZero* = 16;
- Underflow* = 32;
- Overflow* = 64;
- Invalid* = 128;
- CurInex1* = 256;
- CurInex2* = 512;
- CurDivByZero* = 1024;
- CurUnderflow* = 2048;
- CurOverflow* = 4096;
- CurOpError* = 8192;
- CurSigNaN* = 16384;
- CurBSonUnor* = 32768;
-
-
- (*$ELSE*)
-
- (**======================================================================*
- * The interface specific to the software SANE library *
- *======================================================================**)
-
- Invalid* = 1;
- Underflow* = 2;
- Overflow* = 4;
- DivByZero* = 8;
- Inexact* = 16;
- IEEEDefaultEnv* = 0; (*IEEE-default floating-point environment constant*)
-
-
- (*$END*)
-
- (**======================================================================*
- * The common interface for the SANE library *
- *======================================================================**)
-
- DecStrLen* = 255;
- SigDigLen* = 20; (*for 68K; use 28 in 6502 SANE*)
-
-
- TYPE
-
- (*ΔΔ RelOp* = (GreaterThan,LessThan,EqualTo,Unordered);*)
- (*ΔΔ NumClass* = (SNaN,QNaN,Infinite,ZeroNum,NormalNum,DenormalNum);*)
- (*ΔΔ RoundDir* = (ToNearest,Upward,Downward,TowardZero);*)
- (*ΔΔ RoundPre* = (ExtPrecision,DblPrecision,RealPrecision);*)
- (*ΔΔ DecimalKind* = (FloatDecimal,FixedDecimal);*)
- RelOp* = SHORTINT;
- NumClass* = SHORTINT;
- RoundDir* = SHORTINT;
- RoundPre* = SHORTINT;
- DecimalKind* = SHORTINT;
- CONST
- GreaterThan* = 0; LessThan* = 1; EqualTo* = 2; Unordered* = 3;
- SNaN* = 0; QNaN* = 1; Infinite* = 2; ZeroNum* = 3; NormalNum* = 4; DenormalNum* = 5;
- ToNearest* = 0; Upward* = 1; Downward* = 2; TowardZero* = 3;
- ExtPrecision* = 0; DblPrecision* = 1; RealPrecision* = 2;
- FloatDecimal* = 0; FixedDecimal* = 1;
- TYPE
-
- (*$IF OPTION mc68881*)
-
- (**======================================================================*
- * The interface specific to the MC68881 SANE library *
- *======================================================================**)
- Exception* = LONGINT;
-
- Environment* = RECORD
- FPCR*: LONGINT;
- FPSR*: LONGINT;
- END;
-
- TrapVector* = RECORD
- Unordered*: LONGINT;
- Inexact*: LONGINT;
- DivByZero*: LONGINT;
- Underflow*: LONGINT;
- OpError*: LONGINT;
- Overflow*: LONGINT;
- SigNaN*: LONGINT;
- END;
-
- (*$ELSE*)
-
- (**======================================================================*
- * The interface specific to the software SANE library *
- *======================================================================**)
-
- Exception* = INTEGER;
-
- Environment* = INTEGER;
-
- (* Extended96* = ARRAY [0..5] OF INTEGER; Now defined in Types.p *)
-
- MiscHaltInfo* = RECORD
- HaltExceptions*: INTEGER;
- PendingCCR*: INTEGER;
- PendingD0*: LONGINT;
- END;
-
- (*$END*)
-
- (**======================================================================*
- * The common interface for the SANE library *
- *======================================================================**)
-
- DecStr* = ARRAY DecStrLen OF CHAR (*ΔΔ STRING[DecStrLen]*);
-
- DecForm* = RECORD
- style*: DecimalKind;
- digits*: INTEGER;
- END;
-
- Decimal* = RECORD
- sgn*: SHORTINT (*ΔΔ 0..1*);
- exp*: INTEGER;
- sig*: ARRAY SigDigLen OF CHAR (*ΔΔ STRING[SigDigLen]*);
- END;
-
- CStrPtr* = SYSTEM.PTR (*ΔΔ POINTER TO CHAR*);
-
-
- TYPE
- Extended* = LONGREAL; (*ΔΔ NEW*)
- Double* = REAL; (*ΔΔ NEW*)
-
- (*$IF OPTION mc68881*)
-
- (* return IEEE default environment *)
- PROCEDURE IEEEDefaultEnv*(): Environment;
- EXTERNAL PASCAL;
- PROCEDURE SetTrapVector*(Traps: TrapVector);
- EXTERNAL PASCAL;
- PROCEDURE GetTrapVector*(VAR Traps: TrapVector);
- EXTERNAL PASCAL;
- (*•• PROCEDURE X96toX80*(x: Extended): Extended80;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE X80toX96*(x: Extended80): Extended;
- EXTERNAL PASCAL;*)
- (*$IF NOT Elems88*)
-
- (* sine *)
- (*•• PROCEDURE Sin*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Cos*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE ArcTan*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Exp*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Ln*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Log2*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Ln1*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Exp2*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Exp1*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Tan*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*$END*)
-
- (*$ELSE*)
-
- (* return halt vector *)PROCEDURE GetHaltVector*(): LONGINT;
- EXTERNAL PASCAL;
- PROCEDURE SetHaltVector*(v: LONGINT);
- EXTERNAL PASCAL;
- (*••PROCEDURE X96toX80*(x: Extended96): Extended;
- EXTERNAL PASCAL;*)
- (*••PROCEDURE X80toX96*(x: Extended): Extended96;
- EXTERNAL PASCAL;*)
- (*••PROCEDURE Log2*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*••PROCEDURE Ln1*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*••PROCEDURE Exp2*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*••PROCEDURE Exp1*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*••PROCEDURE Tan*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*$END*)
-
-
- (**======================================================================*
- * The common interface for the SANE library *
- *======================================================================**)
-
- (*---------------------------------------------------
- * Conversions between numeric binary types.
- ---------------------------------------------------*)
-
- (*•• PROCEDURE Num2Integer*(x: Extended): INTEGER;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Num2Longint*(x: Extended): LONGINT;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Num2Real*(x: Extended): REAL;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Num2Double*(x: Extended): Double;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Num2Extended*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Num2Comp*(x: Extended): Computational;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Num2Dec*(f: DecForm;x: Extended;VAR d: Decimal);
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Dec2Num*(d: Decimal): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Num2Str*(f: DecForm;x: Extended;VAR s: DecStr);
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Str2Num*(s: DecStr): Extended;
- EXTERNAL PASCAL;*)
- PROCEDURE Str2Dec*(s: DecStr;VAR Index: INTEGER;VAR d: Decimal;VAR ValidPrefix: BOOLEAN);
- EXTERNAL PASCAL;
- PROCEDURE CStr2Dec*(s: CStrPtr;VAR Index: INTEGER;VAR d: Decimal;VAR ValidPrefix: BOOLEAN);
- EXTERNAL PASCAL;
- PROCEDURE Dec2Str*(f: DecForm;d: Decimal;VAR s: DecStr);
- EXTERNAL PASCAL;
- (*•• PROCEDURE Remainder*(x: Extended;y: Extended;VAR quo: INTEGER): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Rint*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Scalb*(n: INTEGER;x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Logb*(x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE CopySign*(x: Extended;y: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE NextReal*(x: real;y: real): real;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE NextDouble*(x: Double;y: Double): Double;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE NextExtended*(x: Extended;y: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE XpwrI*(x: Extended;i: INTEGER): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE XpwrY*(x: Extended;y: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Compound*(r: Extended;n: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE Annuity*(r: Extended;n: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE RandomX*(VAR x: Extended): Extended;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE ClassReal*(x: REAL): NumClass;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE ClassDouble*(x: Double): NumClass;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE ClassComp*(x: Computational): NumClass;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE ClassExtended*(x: Extended): NumClass;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE SignNum*(x: Extended): INTEGER;
- EXTERNAL PASCAL;*)
- (*•• PROCEDURE NAN*(i: INTEGER): Extended;
- EXTERNAL PASCAL;*)
- PROCEDURE SetException*(e: Exception;b: BOOLEAN);
- EXTERNAL PASCAL;
- PROCEDURE TestException*(e: Exception): BOOLEAN;
- EXTERNAL PASCAL;
- PROCEDURE SetHalt*(e: Exception;b: BOOLEAN);
- EXTERNAL PASCAL;
- PROCEDURE TestHalt*(e: Exception): BOOLEAN;
- EXTERNAL PASCAL;
- PROCEDURE SetRound*(r: RoundDir);
- EXTERNAL PASCAL;
- PROCEDURE GetRound*(): RoundDir;
- EXTERNAL PASCAL;
- PROCEDURE SetPrecision*(p: RoundPre);
- EXTERNAL PASCAL;
- PROCEDURE GetPrecision*(): RoundPre;
- EXTERNAL PASCAL;
- PROCEDURE SetEnvironment*(e: Environment);
- EXTERNAL PASCAL;
- PROCEDURE GetEnvironment*(VAR e: Environment);
- EXTERNAL PASCAL;
- PROCEDURE ProcEntry*(VAR e: Environment);
- EXTERNAL PASCAL;
- PROCEDURE ProcExit*(e: Environment);
- EXTERNAL PASCAL;
- (*•• PROCEDURE Relation*(x: Extended;y: Extended): RelOp;
- EXTERNAL PASCAL;*)
-
- END SANE.
-